#ifndef _VALIDATOREACH_H_
#define _VALIDATOREACH_H_
#include "ValidatorBase.h"
#include "MgrBase.h"

class VEach_HpCompare:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(ECompare eCompare);
private:
	ECompare m_eCompare;
};

class VEach_HpMaxCompare:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(ECompare eCompare);
private:
	ECompare m_eCompare;
};
class VEach_RaceCompare:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(bool  bBeSameRace);
private:
	bool m_bBeSameRace;
};
class VEach_SelfCompare:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(bool bSelf);
private:
	bool m_bBeSelfOrNot;
};
class VEach_HasBuffOfMine:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(std::vector<int32>& rData);
private:
	std::vector<int32> m_vReactorIDs;
};

class VEach_NotHasBuffOfMine:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(std::vector<int32>& rData);
private:
	std::vector<int32> m_vReactorIDs;
};
class VEach_SideCompare:public ValidatorEachBase
{
public:
	virtual bool Validate(CombatObj * pOwner,CombatObj * pTarget) const ;
	void InitData(bool  bSameSide);
private:
	bool m_bSameSide;
};

#endif